Проверка статуса репликации¶
Проверка статуса репликации утилитой dsconf¶
Чтобы получить детальную информацию по соглашениям о репликации текущего сервера, нужно выполнить следующую команду:
sudo dsconf -j ALD-COMPANY-LAN replication status --suffix dc=ald,dc=company,dc=lan
Информация будет предоставлена в json-формате:
{
"type": "list", "items": [{
"agmt-name": ["meTodc-2.ald.company.lan"],
"replica": ["dc-2.ald.company.lan:389"],
"replica-enabled": ["on"],
"update-in-progress": ["FALSE"],
"last-update-start": ["20230824143651Z"],
"last-update-end": ["20230824143651Z"],
"number-changes-sent": ["4:25/723 5:1/0 "],
"number-changes-skipped": ["unavailable"],
"last-update-status": ["Error (0) Replica acquired successfully: Incremental update succeeded"],
"last-init-start": ["20230824120948Z"],
"last-init-end": ["20230824120954Z"],
"last-init-status": ["Error (0) Total update succeeded"],
"reap-active": ["0"],
"replication-status": ["Not in Synchronization: supplier (64e76843000000040000) consumer (Unavailable) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)"],
"replication-lag-time": ["unavailable"]
}]
}
Полученную информацию можно представить в формате таблицы, но потребуется установить пакет jq и использовать комплексную команду форматирования, которую можно сохранить в виде скрипта:
sudo apt install jq -y
(printf 'SUFFIX \tAGREEMENT \tSTATE \tTIME-SINCE \tLDAP-STATUS \tREPL-STATUS \n'; sudo dsconf -j ALD-COMPANY-LAN replication list | jq '.items[]' -r | xargs -P8 -i -- sudo dsconf -j ALD-COMPANY-LAN repl-agmt list --suffix={} | jq '.items[].attrs | (.nsds5replicalastupdatestatusjson[0] | fromjson) as $status | [.nsds5replicaroot[0], .cn[0], $status.state, $status.date, $status.ldap_rc_text, $status.repl_rc_text] | @tsv' -r | sort ) | column -s$'\t' -t
Результат выполнения команды см. на Состояние соглашений о репликации в табличном виде.
Рисунок 79 Состояние соглашений о репликации в табличном виде¶
Также, присутствует возможность с помощью команды replication monitor утилиты dsconf собрать информацию сразу со всех контроллеров домена, но в состоянии репликации не будет указан агрегированный статус, что затруднит анализ:
sudo dsconf ldap://localhost:389 replication monitor
Для каждого сервера в домене нужно следует ввести учетные данные пользователя cn=Directory Manager:
Enter Bind DN: cn=Directory Manager
Enter password for cn=Directory Manager on ldap://localhost:389: *****
Enter a bind DN for dc-2.ald.company.lan:389: cn=Directory Manager
Enter a password for cn=Directory Manager on dc-2.ald.company.lan:389: *****
Чтобы не вводить учетные данные каждый раз вручную, на рабочей станции администратора их можно определить в текстовом файле ~/.dsrc:
[repl-monitor-connections]
connection1 = dc-1.ald.company.lan:389:cn=Directory Manager:*
connection2 = dc-2.ald.company.lan:389:cn=Directory Manager:[~/pwd.txt]
connection3 = dc-3.ald.company.lan:389:cn=Directory Manager:S3cret
Где:
для dc-1 будет запрошен пароль;
для dc-2 пароль будет взят из файла
pwd.txt;для dc-3 в качестве пароля будет использована строка
S2cret.
Проверка репликации с помощью скриптов checkipaconsistency¶
Внимание
В данном разделе представлена информация о том, как можно проверить целостность домена с использованием модуля checkipaconsistency из публичного pip-репозитория, установка которого в продуктивных средах без дополнительной проверки скриптов категорически запрещается.
Рекомендуется сначала проверить текущую версию Python, по умолчанию устанавливается 3.7.3:
sudo python3 -V
Python 3.7.3
Следует скачать установочный файл системы управления пакетами pip соответствующей версии:
wget https://bootstrap.pypa.io/pip/3.7/get-pip.py
--2024-11-25 10:44:34-- https://bootstrap.pypa.io/pip/3.7/get-pip.py
Распознаётся bootstrap.pypa.io (bootstrap.pypa.io)… 151.101.84.175, 2a04:4e42:14::175
Подключение к bootstrap.pypa.io (bootstrap.pypa.io)|151.101.84.175|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 2636033 (2,5M) [text/x-python]
Сохранение в: «get-pip.py»
get-pip.py 100%[================================================================>] 2,51M 5,32MB/s за 0,5s
2024-11-25 10:44:35 (5,32 MB/s) - «get-pip.py» сохранён [2636033/2636033]
Далее устанавливается pip:
sudo python3 ./get-pip.py
Collecting pip<24.1
Downloading pip-24.0-py3-none-any.whl.metadata (3.6 kB)
Collecting wheel
Downloading wheel-0.42.0-py3-none-any.whl.metadata (2.2 kB)
Downloading pip-24.0-py3-none-any.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 4.4 MB/s eta 0:00:00
Downloading wheel-0.42.0-py3-none-any.whl (65 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 65.4/65.4 kB 1.3 MB/s eta 0:00:00
DEPRECATION: python-apt 1.8.4.3-ci202309111239-astra1-b1 has a non-standard version number. pip 24.1 will enforce this behaviour change. A possible replacement is to upgrade to a newer version of python-apt or contact the author to suggest that they release a version with a conforming version number. Discussion can be found at https://github.com/pypa/pip/issues/12063
Installing collected packages: wheel, pip
Successfully installed pip-24.0 wheel-0.42.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Затем модуль checkipaconsistency:
sudo python3 -m pip install checkipaconsistency
Collecting checkipaconsistency
Downloading checkipaconsistency-2.7.10-py2.py3-none-any.whl.metadata (9.6 kB)
Collecting pplogger (from checkipaconsistency)
Downloading pplogger-4.2.0-py2.py3-none-any.whl.metadata (1.4 kB)
Requirement already satisfied: python-ldap in /usr/lib/python3/dist-packages (from checkipaconsistency) (3.1.0)
Collecting prettytable (from checkipaconsistency)
Downloading prettytable-3.7.0-py3-none-any.whl.metadata (26 kB)
Requirement already satisfied: dnspython in /usr/lib/python3/dist-packages (from checkipaconsistency) (1.16.0)
Collecting importlib-metadata (from prettytable→checkipaconsistency)
Downloading importlib_metadata-6.7.0-py3-none-any.whl.metadata (4.9 kB)
Collecting wcwidth (from prettytable→checkipaconsistency)
Downloading wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Collecting zipp>=0.5 (from importlib-metadata→prettytable→checkipaconsistency)
Downloading zipp-3.15.0-py3-none-any.whl.metadata (3.7 kB)
Collecting typing-extensions>=3.6.4 (from importlib-metadata→prettytable→checkipaconsistency)
Downloading typing_extensions-4.7.1-py3-none-any.whl.metadata (3.1 kB)
Downloading checkipaconsistency-2.7.10-py2.py3-none-any.whl (24 kB)
Downloading pplogger-4.2.0-py2.py3-none-any.whl (14 kB)
Downloading prettytable-3.7.0-py3-none-any.whl (27 kB)
Downloading importlib_metadata-6.7.0-py3-none-any.whl (22 kB)
Downloading wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Downloading typing_extensions-4.7.1-py3-none-any.whl (33 kB)
Downloading zipp-3.15.0-py3-none-any.whl (6.8 kB)
DEPRECATION: python-apt 1.8.4.3-ci202309111239-astra1-b1 has a non-standard version number. pip 24.1 will enforce this behaviour change. A possible replacement is to upgrade to a newer version of python-apt or contact the author to suggest that they release a version with a conforming version number. Discussion can be found at https://github.com/pypa/pip/issues/12063
Installing collected packages: wcwidth, pplogger, zipp, typing-extensions, importlib-metadata, prettytable, checkipaconsistency
Successfully installed checkipaconsistency-2.7.10 importlib-metadata-6.7.0 pplogger-4.2.0 prettytable-3.7.0 typing-extensions-4.7.1 wcwidth-0.2.13 zipp-3.15.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
При установке модуля в системе будет создан скрипт /usr/local/bin/cipa, который позволит запускать утилиту в одну строку. Учитывая, что пароль нужно передавать утилите открытым текстом, важно не забыть поставить дополнительный пробел перед именем утилиты cipa или отключить ведение истории:
set +o history
cipa -d ald.company.lan -W 'AstraLinux_176'
+--------------------+---------+---------+-------+
| FreeIPA servers: | dc-1 | dc-2 | STATE |
+--------------------+---------+---------+-------+
| Active Users | 1 | 1 | OK |
| Stage Users | 0 | 0 | OK |
| Preserved Users | 0 | 0 | OK |
| Hosts | 2 | 2 | OK |
| Services | 10 | 10 | OK |
| User Groups | 6 | 6 | OK |
| Host Groups | 1 | 1 | OK |
| Netgroups | 0 | 0 | OK |
| HBAC Rules | 2 | 2 | OK |
| SUDO Rules | 0 | 0 | OK |
| DNS Zones | 2 | 2 | OK |
| Certificates | 0 | 0 | OK |
| LDAP Conflicts | 0 | 0 | OK |
| Ghost Replicas | 0 | 0 | OK |
| Anonymous BIND | ROOTDSE | ROOTDSE | OK |
| Microsoft ADTrust | True | True | OK |
| Replication Status | dc-2 0 | dc-1 0 | OK |
+--------------------+---------+---------+-------+